Fiber optics have enabled the transmission of long strings of data in a serial fashion from a driver to a receiver over long distances (typically measured in kilometers) at very high data rates (typically specified in billions of bits per second). This is in contrast to more traditional communication over electrical wires which only allow data to be transmitted for relatively short distances at these high data rates. The distances for communication over wire means is typically in the range of several tens of meters.
Fiber optic data transmission is however inherently noisy in that bit errors in the data are frequent. Error rates of one in a trillion or even one in a billion bits are common. Various checking methods including cyclic redundancy codes are used to detect these errors.
Several methods have been suggested for recovering data that has been transmitted but received with error indications. One method is to employ a high level protocol that keeps track of the time from request to response. Each time a request is sent from one side of the fiber optic link to the other, the sender starts a timer. If a response is not received within a specified time, the sender "assumes" that either the request or the response was lost. The sender then requests status from the other end of the link to determine if the request should be resent.
Another method of recovering data received in error is to package the data into frames and to assign a sequence number to each frame. If a receiver detects a frame with a sequence number that is out of order, it assumes that one or more frames were lost. Using the sequence number of the last correctly received frame, the receiver then requests the lost frames to be retransmitted. This method allows multiple requests and responses to be on the link at the same time, thus improving the utilization.
In all of the procedures discussed above, the resent frame always has the same header and information as the original frame with the transmission error. This requires the sender of the frame to store all of the information associated with any frames that may be resent in the future, thus adding to the complexity (and time) of each successful transmission of a frame.
Thus what is needed is a mechanism by which the sender only retains the information field and the minimum header information for frame identification. When a frame is received with a transmission error, the receiver retains the header information so that the sender does not have to resend it. This improves performance of the normal non-error case since the header information is only retained if there is a transmission error.